const express = require('express');
var router = express.Router();
const bcrypt = require('bcrypt');//加密
const saltRounds = 10;
const UserModel = require('../../models/UserModel');


//注册
router.get('/register', (req, res) => {
    res.render('auth/register');
});

//注册用户
router.post('/register', async (req, res) => {
    try {
        // 检查请求体中是否有密码字段
        if (!req.body.password) {
            return res.status(400).send('密码不能为空');
        }
        // 对密码进行哈希处理
        const hashedPassword = await bcrypt.hash(req.body.password, saltRounds);

        // 创建用户，存储哈希后的密码（而不是明文）
        const data = await UserModel.create({
            ...req.body,
            password: hashedPassword, // 替换明文密码为哈希值
            collectionname: req.body.username
        });
        // res.session.username = req.body.username;
        // 返回成功响应
        res.render('success', { msg: '注册成功', url: '/login' });
        //设置username,以方便获取用户名创建数据库
        // onlyusername = req.body.username;
        // module.exports.onlyusername = onlyusername;
        // console.log(onlyusername);
    } catch (err) {
        console.error('注册失败:', err);
        res.status(500).send('注册失败，请稍后再试\~\~');
    }
});

//获取用户注册的名字,因为设置了首页,先检测session,如果session存在,则跳转到首页,否则跳转到注册页面
// router2.post("/register",function(req,res){
// })

//登入
router.get('/login', (req, res) => {
    res.render('auth/login');
});

//登入用户
router.post('/login', async (req, res) => {
    try {
        // 1. 查找用户（假设用户名是唯一的）
        const user = await UserModel.findOne({ username: req.body.username });
        if (!user) {
            return res.status(401).send('用户名不存在');
        }

        // 2. 比较提交的密码和数据库中的哈希值
        const isMatch = await bcrypt.compare(req.body.password, user.password);
        if (!isMatch) {
            return res.status(401).send('用户名或密码错误');
        }
        // 3. 登录成功（可以设置 session/token）
        res.render('success', { msg: '登录成功', url: '/account' });
        //  设置 session
        req.session.username = user.username;
        req.session._id = user._id;
    } catch (err) {
        console.error('登录失败:', err);
        res.status(500).send('登录失败，请稍后再试\~\~');
    }
});

//退出登入
router.post('/logout', (req, res) => {
    //删除session
    req.session.destroy(() => {
        //重定向到登入页
        // res.redirect('/login');
        res.render('success', { msg: '退出成功', url: '/login' });
    })
});

// router.name = onlyusername
module.exports = router
